layui.use('form', function(){
	var form = layui.form;

	// 初始化数值方法所填的filter必须是在class="layui-form"那一行设定的值
	// 后面所跟的对象类似Json的格式，key值是元素对应的name，后面是所设定的值
	form.val("formVal", {
		// "name": "value",
		"name": "666",
		"xxx": true,
	});
	// console.log(form);

	// 自定义数据验证方法
	form.verify({
	  username: function(value, item){ //value：表单的值、item：表单的DOM对象
	    if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){
	      return '用户名不能有特殊字符';
	    }
	    if(/(^\_)|(\__)|(\_+$)/.test(value)){
	      return '用户名首尾不能出现下划线\'_\'';
	    }
	    if(/^\d+\d+\d$/.test(value)){
	      return '用户名不能全为数字';
	    }
	  }

	  //我们既支持上述函数式的方式，也支持下述数组的形式
	  //数组的两个值分别代表：[正则匹配、匹配不符时的提示文字]
	  ,pass: [
	    /^[\S]{6,12}$/
	    ,'密码必须6到12位，且不能出现空格'
	  ]
	});


	// 动态添加输入框、下拉框等的元素需要再渲染，使用render
	// form.render();//更新全部渲染

	// 监听select选择
	// form.on('select(filter)', function(data){
	form.on('select', function(data){
		console.log(data.elem); //得到select原始DOM对象
		console.log(data.value); //得到被选中的值
		console.log(data.othis); //得到美化后的DOM对象
	});

	// 监听radio单选
	// form.on('radio(filter)', function(data){
	form.on('radio', function(data){
		console.log(data.elem); //得到radio原始DOM对象
		console.log(data.value); //被点击的radio的value值
	});

	// 监听checkbox复选
	// form.on('checkbox(filter)', function(data){
	form.on('checkbox', function(data){
		console.log(data.elem); //得到checkbox原始DOM对象
		console.log(data.elem.checked); //是否被选中，true或者false
		console.log(data.value); //复选框value值，也可以通过data.elem.value得到
		console.log(data.othis); //得到美化后的DOM对象
	});

	// 监听switch开关
	// form.on('switch(filter)', function(data){
	form.on('switch', function(data){
		console.log(data.elem); //得到checkbox原始DOM对象
		console.log(data.elem.checked); //开关是否开启，true或者false
		console.log(data.value); //开关value值，也可以通过data.elem.value得到
		console.log(data.othis); //得到美化后的DOM对象
	});

	// 监听submit提交
	// form.on('submit(*)', function(data){
	form.on('submit', function(data){
		console.log(data.elem) //被执行事件的元素DOM对象，一般为button对象
		console.log(data.form) //被执行提交的form对象，一般在存在form标签时才会返回
		console.log(data.field) //当前容器的全部表单字段，名值对形式：{name: value}
		return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。
	});
});
